package com.cy.pj.sys.pojo;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
/**
 * 用来存数据的类要继承序列化接口
 * Serializable
 *
 *
 * 1设计菜单pojo对象,基于此对象封装操作菜单信息
 * 1).为什么不使用map去存储?可读性查 打开map元素不知道存储的是什么
 * 2).值的类型不可控(值的类型Object)
 * 2.为什么实现Serializable接口?
 * 1)java规范中所有用于存储数据的对象都建议实现此接口.
 * 2)此接口的作用就是做标记,只有实现了接口规范的对象才可以序列化
 * 3)序列化的目的是将对象转换为字节存储到缓存,文件或进行网络传输
 * 3.为什么要添加serialVersionUID呢?
 * 1)为序列化和反序列化实现过程中的一个版本标识.
 * 2)将字节反序列化时,需要和序列化时使用的id进行对比,相同则可反序列化
 * 4.你了解JSON序列化和反序列化?
 * 1)JSON序列化和反序列化是一种广义的序列化和反序列化实现.
 * 2)将一个对象转换为json格式的字符串称之为json序列化
 * 3)将一个json格式的字符串转换为pojo,map等对象称之为反序列化
 *
 *
 */
public class SysMenu implements Serializable {

    private static final long serialVersionUID = -7617834580017764587L;
    /**
     * 菜单id(对应数据库表中的物理主键)
     */
    private Integer id;
    private String name;
    /**菜单url(对应要访问的资源)*/
    private String url;
    /**菜单类型(菜单,按钮)*/
    private Integer type;
    /**菜单序号,有需要可以对菜单进行排序*/
    private Integer sort;
    /**备注*/
    private String note;
    /**上级菜单id*/
    private Integer parentId;
    /**上级菜单名称(菜单表中没有此字段)*/
    private String parentName;
    /**菜单授权标识(访问菜单时需要具备的权限)*/
    private String permission;
    /**纪录创建时间*/
    private Date createdTime;
    /**纪录最后一次的修改时间*/
    private Date modifiedTime;
    /**纪录创建用户*/
    private String createdUser;
    /**纪录修改用户*/
    private String modifiedUser;
    private String remark;
    //需求:此纪录只能由创建用户进行修改(细粒度 的权限控制)
}
